package com.desay.pangoo.itmt.repository.spec;

import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;

/**
 * @Description： ExpandCriterion接口
 * 
 * @author shouyi.huang@desay-svautomotive.com on 2019年7月23日下午8:35:34
 * @Modified By： [] on [] for [修改说明]
 *
 */
public interface ExpandCriterion {
    public enum Operator {
        /** 等于 */
        EQ,
        /** 不等于 */
        NE,
        /** 模糊查询 */
        LIKE,
        /** 大于 */
        GT,
        /** 小于 */
        LT,
        /** 大于等于 */
        GTE,
        /** 小于等于 */
        LTE,
        /** 并且 */
        AND,
        /** 或者 */
        OR,
        /** 为空 */
        ISNULL,
        /** 不为空 */
        ISNOTNULL,
        /** 成员 */
        ISMEMBER,
        /**集合不为空*/
        ISNOTEMPTY,
        /**集合为空*/
        ISEMPTY,
        /***/
        GROUPBY
    }

    /**
     * toPredicate
     * 
     * @param root
     * @param query
     * @param builder
     * @return
     */
    public Predicate toPredicate(Root<?> root, CriteriaQuery<?> query, CriteriaBuilder builder);
}
